package object;

import java.util.Arrays;

public class ObjectDemo {
    public static void main(String[] args) {
        // 创建一个Point对象，用于演示Point类的使用
        Point p = new Point(1, 2);
        // 设置Point对象的X坐标值为100
        p.setX(100);
        // 设置Point对象的Y坐标值为200
        p.setY(200);
        // 输出Point对象的X坐标值
        System.out.println(p.getX());
        // 输出Point对象的Y坐标值
        System.out.println(p.getY());

        // 输出Point对象的默认字符串表示
        System.out.println(p);//object.Point@232204a1
        // 输出Point对象的字符串表示，展示对象的详细信息
        System.out.println(p.toString());//object.Point@232204a1
        // 输出Point对象的哈希码值
        System.out.println(p.hashCode());//589431969
        // 检查并输出Point对象是否等于一个新的Point对象，具有相同的坐标(1, 2)
        System.out.println(p.equals(new Point(1, 2)));
        // 检查并输出Point对象是否等于一个新的Point对象，但坐标不同(2, 1)
        System.out.println(p.equals(new Point(2, 1)));

        String s = String.valueOf(p);
        System.out.println(s);
        //java中任何类型与字符串的连接结果都是字符串
        //实际上JVM也是调用该类的toString方法将其转换为字符串
        String str = "这是一个点"+p;
        System.out.println(str);
        System.out.println("!!!!!!!!!!!!!!!!");
        Point p1 = new Point(100, 200);
        System.out.println(p1.equals(p));
        System.out.println(p1.equals(new Point(100, 200)));
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

        //equals()的演示
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1.equals(s2));
        System.out.println(s1 == s2);
        //StringBuilder没有重写equals方法，所以默认调用Object的equals方法，比较的是两个对象的地址
        StringBuilder builder1 = new StringBuilder("hello");
        StringBuilder builder2 = new StringBuilder("hello");
        System.out.println(builder1.equals(builder2));
        System.out.println(s1.equals(builder2));
    }
}
